"""
tensorflow 2版本包含了CPU版本和GPU版本,1版本是独立的2个版本
如果使用GPU,必须要英伟达显卡(cuda),苹果系统不支持GPU
"""
import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 把数据转为(0, 1)之间
x_train, x_test = x_train / 255.0, x_test / 255.0
# Sequential 分层
# Flatten 把图像的格式从二维数组转为一维数组
# input_shape 图像的像素
# 第一Dense层有128个节点（或神经元）。第二层（也是最后一层）是一个10节点的softmax层
# 该层返回10个总和为1的概率分数的数组。每个节点都包含一个分数，该分数指示当前图像属于10个类别之一的概率。
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])
# 编译模型 优化器,损失函数,指标-用于监视培训和测试步骤 accuracy即正确分类的图像比例
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
# 一个epoch是指把所有训练数据完整的过一遍
model.fit(x_train, y_train, epochs=5)
# verbose = 0 为不在标准输出流输出日志信息google-auth
# verbose = 1 为输出进度条记录
# verbose = 2 为每个epoch输出一行记录
model.evaluate(x_test, y_test, verbose=2)
